package com.sourcetrip.arraylist;

import java.util.Iterator;
import java.util.LinkedList;

/**
 * @author: ZhouBert
 * @date: 2020/11/16
 * @description:	测试随机访问
 * 对于 LinkedList 的
 * 【随机访问】
 * 【顺序访问】
 *
 * 对于实际中的优化建议：
 * 当得到 list 后，进行 instanceOf 的判断：
 * if(list instanceOf RandomAccess)-> list.get(index)
 * else -> iterator
 */
public class RandomAccessTest02 {

	/**
	 * 以 10W 的数据来看，
	 * RandomAccess cost: 4197
	 * Iterator cost: 4
	 *
	 * 如果是 100W 的数据，一时半会儿根本算不出来！看来对于 linkedlist 而言，随机访问是个很大的陷阱！
	 *
	 * @param args
	 */
	public static void main(String[] args) {
		LinkedList<Integer> list = new LinkedList<>();
		//添加 100W 数据，验证速度//实在是太久了，于是改成 10W
		for (int i = 0; i < 100000; i++) {
			list.add(i);
		}

		//开始随机访问 list.get(i)
		long begin = System.currentTimeMillis();
		for (int i = 0; i < list.size(); i++) {
			list.get(i);
		}
		System.out.println("RandomAccess cost: " + (System.currentTimeMillis()-begin));


		//开始顺序访问
		begin = System.currentTimeMillis();
		Iterator<Integer> iterator = list.iterator();
		while (iterator.hasNext()){
			iterator.next();
		}
		System.out.println("Iterator cost: " + (System.currentTimeMillis()-begin));
	}
}
